#!/usr/bin/perl -w

###########################################################################
# gui.pl
#
# Libreria con funciones y variables de utilidad general relacionadas con 
# la interfaz grafica de usuario (gui).
# Autor: Luis Valverde Garcia
# Fecha: 1-7-2002


# definicion de los colores caracteristicos de cada espacio
%spaceColors = (
	dark_1 => '"#9999FF"',
	bright_1 => '"#CCCCFF"',
	dark_2 => '"#1AC510"',
	bright_2 => '"#B0FF62"',
	dark_3 => '"#FF9933"',
	bright_3 => '"#FFC993"'
);

%titleColors = (
	dark_1   => '"#110366"',
	bright_1 => '"#FFFFFF"',
	dark_2   => '"#110366"',
	bright_2 => '"#FFFFFF"',
	dark_3   => '"#110366"',
	bright_3 => '"#FFFFFF"'
); 


###########################################################################
# gui_declareIcon
#
# Declara un icono que cambia al poner el cursor encima y que sera 
# incluido en el documento html mas tarde mediante gui_putIcon.
#
# Recibe:
#    - nombre del icono
#    - nombre fichero con la imagen normal (sin el cursor encima)
#    - nombre fichero con la imagen activada (con el cursor encima)
#
# Devuelve:
#    nada
###########################################################################

sub gui_declareIcon {
	local($name,$imgNorm,$imgAct, $formulario)=@_;

	# imprimir sentencias javascript	
	print <<EOF1;
<Script>
<!-- 

// definimos las dos imagenes
${name}up = new Image; ${name}up.src = "$imgNorm";
${name}down = new Image; ${name}down.src = "$imgAct";

// funcion que cambia la imagen segun el evento
function ${name}Change(p, operation) {
	if (operation=="act") {
		p.src = ${name}down.src;
	}
	else {
		p.src = ${name}up.src;
	}		
}

//-->
</script>
EOF1
;

}



###########################################################################
# gui_putIcon
#
# Dibuja un icono que cambia al poner el cursor encima y que ha sido
# definido anteriormente con gui_declareIcon.
#
# Recibe:
#    - nombre del icono
#    - nombre fichero imagen inicial
#    - atributos HTML de la imagen (opcional)
#
# Devuelve:
#    nada
###########################################################################

sub gui_putIcon {
	local($name,$imgInicial, $attr)=@_;
	
	# imprimir codigo hmtl
	print "<img src=\"$imgInicial\" name=\"$name\" onmouseOver=\"${name}Change(this, 'act')\" onmouseOut=\"${name}Change(this, 'norm')\" $attr>";

}
	


###########################################################################
# ImprimeBarraHerramientas
#
# Imprime la barra de tareas para una tarea en particular
#
# Recibe:
#    - $dbLanguage: idioma del nodo (devuelto por &get_language)
#    - $flag1: sirve para identificar los iconos y elementos de entrada a mostrar en la parte 
#              izquierda de la barra (1 = poner icono ayuda)
#    - $flag2: sirve para identificar los iconos a mostrar en la parte derecha de la barra
#              1000 -> cancelar
#              2000 -> terminar (como aceptar pero con icono de terminar)
#              3000 -> actualizar (icono de recargar pero usa url_cancelar)
#              100  -> atras
#              200  -> volver (icono de atras pero volviendo a página anterior con history.back())
#              10   -> alante
#              1    -> aceptar
#              2    -> recargar (como aceptar pero con icono de recargar)
#              ej. 1010 hace que salgan el icono de cancelar y el de alante
#    - $titulo: titulo de la ventana
#    - $color: numero del espacio actual, determina el color de la barra
#    - $url_cancelar: url a la que se va al pulsar el boton cancelar
#    - $url_regresa: url a la que se va al pulsar el boton atras
#    - $url_ayuda: url a la que se va al pulsar el boton de ayuda (en ventana nueva)
#
# Devuelve:
#    nada
# Cambios: 
#    (10-7-2002) Jaime Moreno Llorena añade la acción "recargar"  
#    (11-7-2002) Jaime Moreno Llorena añade la acción "terminar"  
#    (15-7-2002) Jaime Moreno Llorena añade la acción "volver" y nuevo tratamiento de flag2  
###########################################################################

sub ImprimeBarraHerramientas {
	local ($dbLanguage, $flag1, $flag2, $titulo, $color, $url_cancelar, $url_regresar,$url_ayuda) = @_;
	local ($imagen1,$imagen2,$img_path,%alts,%H);

	$img_path = "../$IMG/img_toolbar/";

	# obtener alts de la base de datos
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'helpOperation'");
	$alts{'ayuda'}=$H{'txt'.1};
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'cancel'");
	$alts{'cancel'}=$H{'txt'.1};
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'ahead'");
	$alts{'alante'}=$H{'txt'.1};
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'back'");
	$alts{'atras'}=$H{'txt'.1};
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'accept'");
	$alts{'aceptar'}=$H{'txt'.1};
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'reload'");
	$alts{'recargar'}=$H{'txt'.1};
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'finish'");
	$alts{'terminar'}=$H{'txt'.1};
	%H = &get_data($dbLanguage, "HelpMsg", "name", "'historyback'");
	$alts{'volver'}=$H{'txt'.1};

	# inicio tabla
	print <<EOF1;
    <TABLE BGCOLOR=$spaceColors{'dark_'.$color} WIDTH=100%>
	<TR>
EOF1
    ;

    
	# pintar ayuda
	if ($flag1 == 1) {
		print "\n<TD width=\"10\">";
		$imagen1 = $img_path . "nav_help.gif";
		$imagen2 = $img_path . "nav_help_" . $color . "_sel.gif";
		&gui_declareIcon("help", $imagen1, $imagen2);
		print "<A HREF=\"$url_ayuda\" TARGET=\"_blank\">";
		&gui_putIcon("help",$imagen1,"width=\"22\" height=\"21\" BORDER=\"0\" title=\"$alts{ayuda}\"");
		print "</A></TD>";
	}
	
	# pintar titulo
	if ($titulo ne "") {
		print <<EOF1_3;
	    <TD><b><font color = $titleColors{'bright_'.$color} face="MS Sans Serif" size="2">$titulo</b></font></b></TD>
EOF1_3
    ;
	}
	print   "\n<TD ALIGN=\"RIGHT\">" if ($flag2 > 0);
	
	# descomponer flag2
	$uflag2 = $flag2 % 10;
	$dflag2 = ($flag2 % 100) - $uflag2;
	$cflag2 = ($flag2 % 1000) - $dflag2 - $uflag2;
	$mflag2 = $flag2 -$cflag2 - $dflag2 - $uflag2;

	# pintar cancelar
	if ($mflag2 == 1000) {
		$imagen1 = $img_path . "nav_cancel.gif";
		$imagen2 = $img_path . "nav_cancel_" . $color . "_sel.gif";
		&gui_declareIcon("cancel", $imagen1, $imagen2);
		print "<A HREF=\"$url_cancelar\">";
		&gui_putIcon("cancel",$imagen1, "width=\"22\" height=\"21\" BORDER=\"0\" title=\"$alts{cancel}\"");
		print "</A>";
	}
	
	# pintar terminar
	if ($mflag2 == 2000) {   
		$imagen1 = $img_path . "nav_terminar.gif";
		$imagen2 = $img_path . "nav_terminar_" . $color . "_sel.gif";
		&gui_declareIcon("terminar", $imagen1, $imagen2);
		print "<A HREF=\"$url_cancelar\">";
		&gui_putIcon("terminar",$imagen1, "width=\"22\" height=\"21\" BORDER=\"0\" title=\"$alts{terminar}\"");
		print "</A>";
	}
	
	# pintar actualizar
	if ($mflag2 >= 3000) {   
		$imagen1 = $img_path . "nav_recargar.gif";
		$imagen2 = $img_path . "nav_recargar_" . $color . "_sel.gif";
		&gui_declareIcon("actualizar", $imagen1, $imagen2);
		print "<A HREF=\"$url_cancelar\">";
		&gui_putIcon("actualizar",$imagen1, "width=\"22\" height=\"21\" BORDER=\"0\" title=\"$alts{actualizar}\"");
		print "</A>";
	}
	
	# pintar atras
	if ($cflag2 == 100) {
		$imagen1 = $img_path . "nav_atras.gif";
		$imagen2 = $img_path . "nav_atras_" . $color . "_sel.gif";
		&gui_declareIcon("atras", $imagen1, $imagen2);
		print "<A HREF=\"$url_regresar\">";
		&gui_putIcon("atras",$imagen1, "width=\"22\" height=\"21\" BORDER=\"0\" title=\"$alts{atras}\"");
		print "</A>";
	}
	
	# pintar volver
	if ($cflag2 >= 200) {
		$imagen1 = $img_path . "nav_atras.gif";
		$imagen2 = $img_path . "nav_atras_" . $color . "_sel.gif";
		&gui_declareIcon("volver", $imagen1, $imagen2);
		print "<A HREF=\"javascript:history.back()\">";
		&gui_putIcon("volver",$imagen1, "width=\"22\" height=\"21\" BORDER=\"0\" title=\"$alts{volver}\"");
		print "</A>";
	}
	
	# pintar alante
	if ($dflag2 >= 10) {
		$imagen1 = $img_path . "nav_adelante.gif";
		$imagen2 = $img_path . "nav_adelante_" . $color . "_sel.gif";
		&gui_declareIcon("adelante", $imagen1, $imagen2);
		print "<INPUT TYPE=\"IMAGE\" NAME=\"adelante\" SRC=\"$imagen1\" onmouseOver=\"adelanteChange(this, 'act')\" onmouseOut=\"adelanteChange(this, 'norm')\" title=\"$alts{alante}\">";
	}
	
	# pintar aceptar
	if ($uflag2 == 1) {   
		$imagen1 = $img_path . "nav_aceptar.gif";
		$imagen2 = $img_path . "nav_aceptar_" . $color . "_sel.gif";
		&gui_declareIcon("aceptar", $imagen1, $imagen2);
		print "<INPUT TYPE=\"IMAGE\" NAME=\"aceptar\" SRC=\"$imagen1\" onmouseOver=\"aceptarChange(this, 'act')\" onmouseOut=\"aceptarChange(this, 'norm')\" title=\"$alts{aceptar}\">";
	}
	
	# pintar repetir
	if ($uflag2 >= 2) {   
		$imagen1 = $img_path . "nav_recargar.gif";
		$imagen2 = $img_path . "nav_recargar_" . $color . "_sel.gif";
		&gui_declareIcon("aceptar", $imagen1, $imagen2);
		print "<INPUT TYPE=\"IMAGE\" NAME=\"aceptar\" SRC=\"$imagen1\" onmouseOver=\"aceptarChange(this, 'act')\" onmouseOut=\"aceptarChange(this, 'norm')\" title=\"$alts{recargar}\">";
	}
	
	# fin tabla
	print "</TD></TABLE>\n";
}

###########################################################################
# gui_declarePopUpFun
#
# Declara una funcion que abre pop-ups dado un nombre y url
#
# Recibe:
#    - url
#    - nombre
#
# Devuelve:
#    Nombre de la funcion de pop-up
###########################################################################

sub gui_declarePopUpFun {

	# 	# imprimir sentencias javascript	
	# 	print <<EOF1;
	# <Script>
	# <!-- 
	# 
	# // definimos las dos imagenes
	# ${name}up = new Image; ${name}up.src = "$imgNorm";
	# ${name}down = new Image; ${name}down.src = "$imgAct";
	# 
	# // funcion que cambia la imagen segun el evento
	# function ${name}Change(p, operation) {
	# 	if (operation=="act") {
	# 		p.src = ${name}down.src;
	# 	}
	# 	else {
	# 		p.src = ${name}up.src;
	# 	}		
	# }
	# 
	# //-->
	# </script>
	# EOF1
	# ;
}
return 1;


